
/*
 * 文件名：ElectromagnetControl.cpp
 * 功能描述：电磁铁控制和选择
 */
#include "ElectromagnetControl.h"
#include <Arduino.h>

int currentElectromagnetPin = -1; // 用于保存当前使用的电磁铁引脚

/**
 * @brief 电磁铁控制系统初始化
 *
 * 配置所有电磁铁控制引脚为输出模式并初始化为低电平
 * @warning 必须在其他电磁铁操作前调用此初始化函数
 */
// 初始化所有电磁铁引脚为输出
void initElectromagnets()
{
  pinMode(MEAG1, OUTPUT);
  pinMode(MEAG2, OUTPUT);
  pinMode(MEAG3, OUTPUT);
  pinMode(MEAG4, OUTPUT);
  pinMode(MEAG5, OUTPUT);

  if (print_key)
  {
    Serial.println("All electromagnets initialized");
  }
  /*  20250905增加
  初始化为无磁力
  */
  digitalWrite(MEAG1, LOW);
  digitalWrite(MEAG2, LOW);
  digitalWrite(MEAG3, LOW);
  digitalWrite(MEAG4, LOW);
  digitalWrite(MEAG5, LOW);

  /* 20250905增加 END */
}

/**
 * @brief 选择当前操作的电磁铁
 * @param index 电磁铁编号（有效值1-5）
 * @note 无效输入将保持当前选择不变
 */
void setElectromagnet(int index)
{
  switch (index)
  {
   
  case 1: 
    currentElectromagnetPin = MEAG1;//电磁铁引脚
    break;
  case 2:
    currentElectromagnetPin = MEAG2;
    break;
  case 3:
    currentElectromagnetPin = MEAG3;
    break;
  case 4:
    currentElectromagnetPin = MEAG4;
    break;
  case 5:
    currentElectromagnetPin = MEAG5;
    break;
  default:
    // Serial.println("Invalid electromagnet index");
    return;
  }

  // Serial.print("Electromagnet ");
  // Serial.print(index);
  // Serial.println(" selected");
}

// 控制电磁铁的开关状态
void controlElectromagnet(bool state)
{
  if (currentElectromagnetPin == -1)
  {
    // Serial.println("No electromagnet selected!");
    return;
  }
  //高电平导通
  digitalWrite(currentElectromagnetPin, state ? HIGH : LOW);
  // 串口输出
  //  if (state) {
  //      Serial.print("Electromagnet ON\n");
  //  } else {
  //      Serial.print("Electromagnet OFF\n");
  //  }
}
